Method for moving and aligning 3D objects in a plane within the 2D environment

ABSTRACT

Example systems and methods for virtual visualization of a three-dimensional model of an object in a two-dimensional environment. The method may include moving and aligning the three-dimensional model of the object along a plane in the two-dimensional environment.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application claims priority to U.S. Provisional PatentApplication No. 61/992,759 entitled “METHOD FOR FORMING WALLS TO ALIGN3D OBJECTS IN 2D ENVIRONMENT”, filed on May 13, 2014, the entirecontents of which are hereby incorporated by reference for all purposes.The present application also claims priority to U.S. Provisional PatentApplication No. 61/992,629 entitled “METHOD FOR PROVIDING SCALE TO ALIGN3D OBJECTS IN 2D ENVIRONMENT”, filed on May 13, 2014, the entirecontents of which are hereby incorporated by reference for all purposes.The present application claims further priority to U.S. ProvisionalPatent Application No. 61/992,719 entitled “METHOD FOR PROVIDING APROJECTION TO ALIGN 3D OBJECTS IN 2D ENVIRONMENT”, filed May 13, 2014,the entire contents of which are hereby incorporated by reference forall purposes. The present application claims further priority to U.S.Provisional Patent Application No. 61/992,774 entitled “METHOD FORMOVING AND ALIGNING 3D OBJECTS IN A PLANE WITHIN THE 2D ENVIRONMENT”,filed May 13, 2014, the entire contents of which are hereby incorporatedby reference for all purposes. The present application claims furtherpriority to U.S. Provisional Patent Application No. 61/992,746 entitled“METHOD FOR REPLACING 3D OBJECTS IN 2D ENVIRONMENT”, filed May 13, 2014,the entire contents of which are hereby incorporated by reference forall purposes. The present application claims further priority to U.S.Provisional Patent Application No. 61/992,665 entitled “METHOD FORINTERACTIVE CATALOG FOR 3D OBJECTS WITHIN THE 2D ENVIRONMENT”, filed May13, 2014, the entire contents of which are hereby incorporated byreference for all purposes.

BACKGROUND AND SUMMARY

Interior design may involve developing and evaluating a design for aroom or environment. For example, a designer may wish to positionvarious objects, including furniture, lighting fixtures, and wallhangings, within a 2D environment of an interior room. Conventionalinterior design tools may enable a user to position objects by selectingan object, and “dragging and dropping” the object to a location in the2D environment using a mouse, keyboard or other input device.

The inventors herein have recognized various issues with the abovemethods. Namely, although objects may be positioned independently withina 2D environment, it may be difficult to precisely move and align anobject in the 2D environment. For example, a user may want to place awall art in the 2D environment. Using conventional methods, the user maymanually position the wall art on a wall plane within the 2Denvironment. However, if the user decides to move over the wall art to aceiling plane, the wall art may be positioned inaccurately.

One approach that at least partially addresses the above issues mayinclude a method for placing and moving an object in the 2D environment,comprising of the knowledge of the plane to which the 3D object may berestricted. A method may comprise of selecting the 3D object along withthe information if the 3D object is a wall object or a ground plane(e.g. floor plane) object or a top plane (e.g. ceiling plane) object.

In another embodiment, a method for placing objects in the 2Denvironment may comprise moving the 3D object along a plane. The usermay be unaware while moving the 3D object from one plane to another,that the plane to which the 3D object is being moved may not beconfigured to accommodate the 3D object. For example, while moving awall mirror to a satisfactory position within the 2D environment, theuser may begin to move the wall mirror to a ceiling plane in the 2Denvironment. The method and system discussed herein may prevent suchmaneuvers.

It should be understood that the summary above is provided to introducein simplified form a selection of concepts that are further described inthe detailed description. It is not meant to identify key or essentialfeatures of the claimed subject matter, the scope of which is defineduniquely by the claims that follow the detailed description.Furthermore, the claimed subject matter is not limited toimplementations that solve any disadvantages noted above or in any partof this disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a block diagram illustrating the overall system forvisualization of 3D models of objects in a 2D environment, in accordancewith various embodiments.

FIG. 1B is a schematic illustration of a system for visualization of 3Dmodel of objects in a 2D environment.

FIG. 2 is a block diagram showing various modules of an engine forvisualization of 3D models of objects in a 2D environment, in accordancewith various embodiments.

FIGS. 3A, 3B, 3C and 3D are example representations of a 2D environment.

FIGS. 4A, 4B and 4C are example representations of another 2Denvironment

FIG. 5 is an example flowchart method for placing and moving the 3Dobject in the 2D environment.

FIG. 6A is another example flowchart for placing and moving the 3Dobject in the 2D environment.

FIG. 6B is a schematic illustration of positioning of a wall object on aselected wall plane.

FIG. 7 illustrates an example of a computer network system, in whichvarious embodiments may be implemented.

DETAILED DESCRIPTION

The present description relates to visualization and adding of 3D modelsof objects to a 2D environment, wherein the 2D environment is a realenvironment represented by a photo or video. A user may importphotographic images, digital images, video images, and other graphicalrepresentations of the 2D environment. Further, the 2D environment mayinclude existing graphical materials or graphical materials captured asa still image or a live feed image. The 2D environment may serve as thebackground environment for adding a 3D model of an object.

The 3D object is associated with object information data, which includesa defined set of parameters relevant to the 3D object. The parametersmay include attributes, instructions, and other such scripts associatedand essential for graphical use of the 3D object. Characteristics of the3D object, interaction between object entities may be analyzed with suchassociated data. The object information data associated with the 3Dobject may include geometric attributes, depth value, color value, andsuch other properties. For example, geometric attributes of the 3Dobject, such as a chair, may include height and width information. If auser decides to place the chair near a table, already present in the 2Denvironment, the height and width information for the chair may help theuser in precise aligning.

The object information data may also include metadata encoding one ormore of a set of parameters relevant to the 3D object, manufacturer'sguidelines, regulations and guidelines governing the 3D object, safetyguidelines for the 3D object, and any other relevant informationspecific to the 3D object.

The object information data may include metadata defining the behaviorof the 3D object within the 2D environment. For example, a 3D object mayinclude metadata defining an object as one of a wall object, ceilingobject, floor object, or combination thereof. The metadata may furtherdefine the placement and movement of the object within the environment.

The object information data may also include metadata encoding aninformation tag. The information tag may include a description of the 3Dobject including dimensions, materials, cost, manufacturer, and otherinformation specific to the 3D object discussed below.

The object information data may also include metadata encoding graphicaldata, spatial data, and other rendering data for superimposing the 3Dobject within the 2D environment. Graphical, spatial, and rendering datamay be processed by a computing device to generate and display the 3Dobject to the user.

The parameters may include attributes, instructions, behaviorcharacteristics, visualizations to be displayed by the 3D object, andother such scripts associated and essential for graphical use of the 3Dobject. For example, the parameters may include, but are not limited to,the physical dimensions of the 3D object, mounting requirements for the3D object, metadata identifying the 3D object as a floor object, wallobject, ceiling object, or combination thereof, power requirements,length of a power cord, and any other relevant information describingthe 3D object.

Additionally, the object information data may include additionalparameters such as manufacturer's guidelines and/or safety guidelinesfor safe and proper installation and operation of the 3D object. Forexample, the object information data may include metadata encoding aminimum clearance or spatial requirement surrounding the 3D object. Theminimum clearance/spatial requirement may be required for adequateventilation of the 3D object, prevention of fire hazards, noise control,clearance of moving parts of the 3D object, or to satisfy any otherpersonal safety, medical safety, or industrial safety standard. As anexample, a display may require 6 inches clear from the cooling fangratings to allow for proper airflow to cool the electric internalswithin the display. As another example, in a medical application, amagnetic resonance imager may generate an electro-magnetic field in anarea surrounding the magnetic resonance imager that may interfere withother electrically powered or magnetically sensitive medical equipment,personal medical equipment such as a pacemaker, and any magneticmaterial that may be drawn to the magnetic resonance imager by magneticattraction. In an industrial application, some industrial equipment havemoving or rotating parts that may extend past the main body of the pieceof industrial equipment. Therefore, to allow for proper operation of theindustrial equipment, other equipment or objects may be located outsidea minimum clearance or spatial requirement surrounding the piece ofindustrial equipment.

In another example, in a restaurant environment, the tables, chairs, andother objects within the restaurant space may be required to be arrangedsuch that a minimum clearance surrounding each object is maintained andthat pathways for traversal are maintained clear and of sufficientdimensions to meet federal and local accommodation codes. Therefore,each chair and each table may include a minimum clearance or spatialrequirement surrounding the table or chair to meet the governingguidelines.

In another example, in a retail environment, retail display fixtures maybe arranged within the retail space such that a minimum clearancesurrounding each fixture may be maintained to allow shoppers to easilymove within the retail space and to meet federal and local accommodationcodes. In addition to satisfaction of the governing access codes, the 3Dmodels of the display fixtures and accompanying merchandise may bearranged within the 2D image of the retail space allowing retailplanners to efficiently design retail merchandising plans, design retailexhibit plans, and then electronically distribute the design plans tothe stores. Further, the retail merchandising teams at the stores maypropose amendments to the design plans that are specific to theavailable retail space within the store accounting for differences dueto the specific architectural design of the store space. Theseamendments may then be reviewed and approved by the retail planners,thereby providing an advantage of an efficient and electronic means ofdistributing, amending, and approving retail merchandising plans.

The object information data may be provided by multiple sources,including but not limited to, one or more of the manufacturer of the 3Dobject, government safety regulations such as provided by theOccupational Safety and Health Administration or other Federal or localgoverning body, federal and local accommodation codes such as theAmericans with Disabilities Act and federal, state, and local firecodes, the user may provide the object information data, objectinformation data may be downloaded from a remote data base, encoded byan asset manager or managing service providing the 3D objects, or anyother suitable means. It will be appreciated that the listed sources ofobject information data are not intended to be limiting.

In some embodiments, the object information data may include one or morespatial requirements. The spatial requirements may exceed the geometricdimensions of the 3D object and govern interactions between the 3Dobject and other object entities. The spatial requirements of a 3Dobject may be specific to the object based upon one or more of amanufacturer's recommendation, imported from a remote database,government regulation, configured by the user, or any other suitablesource.

In some embodiments, the two-dimensional environment may also includeenvironmental information data. The environmental information data mayinclude metadata which may encode one or more of a set of propertiesrelevant to the 2D environment, regulations and guidelines governing the2D environment such as governing access regulations, industrial safetystandards, and governing fire codes, safety guidelines for the 2Denvironment, and any other relevant information specific to the 2Denvironment. The properties encoded by environmental information datamay include one or more of the dimensions of the 2D environment,characteristics of the 2D environment governing the behavior andmovement of 3D objects within the 2D environment, locations of powersupplies and the voltage and frequency supplied, constructioninformation such as location of load bearing members, allowable loadinformation, construction materials, available ventilation, acousticinformation, fixed lighting sources, and any other information relevantto the two-dimensional environment.

The environmental information data may be provided by multiple sourcessuch as one or more of government safety regulations such as provided bythe Occupational Safety and Health Administration or other Federal orlocal governing body, federal and local accommodation codes such as theAmericans with Disabilities Act and federal, state, and local firecodes, the user may provide the object information data, objectinformation data may be downloaded from a remote data base, encoded byan asset manager or managing service providing the 3D objects, or anyother suitable means.

In these embodiments properties of the 2D environment may be retrievedfrom the environmental information data and analyzed to determineinteraction with 3D objects within the 2D environment. As a non-limitingexample, one or more threshold barriers between two planes of the 2Denvironment may be adjusted to satisfy one or more conditions encoded inthe metadata of both the environmental information data and the objectinformation data.

In some embodiments, the physical properties of the 3D object,interaction between object entities, and interactions between objectentities and the 2D environment may be analyzed with such associateddata.

As the data associated with the 3D object is transferred to the 2Denvironment, the 3D object may be visualized in the 2D environment withrespect to scale and perspective of the 2D environment. The 2Denvironment including the 3D object may be referred to as a modeled 2Denvironment.

Within the 2D environment, the user may move the 3D object in a verticaldirection, horizontal direction, and in a rotational manner. Theselected 3D object may be configured to be positioned in a certainplane, where the plane may be a wall plane or a ground plane (e.g., afloor plane) or a top plane (e.g., a ceiling plane). For example, if the3D object is a wall painting, the user may move the wall painting in avertical or horizontal manner on a wall plane of the 2D environment;whereas, if the 3D object is a chair on a ground plane of the 2Denvironment, the user may move the chair in a horizontal or rotationalmanner.

The user may move the 3D object as desired on the plane the 3D object isconfigured to belong. The user may prefer to move the 3D object toanother plane, for example the user may prefer to position a wall objectto a ceiling. In such examples, the 3D object will halt at theintersection of the two different planes and the user may not be able tomove the 3D object configured to be on the wall plane to the ceilingplane. However, if the user prefers to move a wall object, such as awall mirror, from one wall to another the wall, then the wall mirror maycontinue to move from one wall plane to another wall plane.

The user may save the resulting image to a personal computer (PC) ornetwork database for future use or reference, or post the resultingimage on a social network, and perform other operations on the image.Further, the user may have some previously saved images which the usermay use to compare with the newly obtained images in order to selectpreferable combinations of a 3D object in a 2D background. The user mayuse his preferences before purchasing one or more 3D object for the 2Denvironment.

Additionally, the user may be connected to various social networkingservices and/or microblogs, such as Facebook™, Twitter™, and other suchnetworking services. Connection to social networking services and/ormicroblogs may allow user to interact with his contacts to share andobtain opinion and feedback on image obtained after placing 3D objectsin 2D environment. Further, the user may also request help fromdesigning services to arrange 3D objects within a given 2D environment.

Visualization and addition of 3D objects to any 2D environment providesample opportunities in various spheres of human life. Spatialrepresentation of 3D objects may help in comprehending and learning,designing and drafting, efficient space management, and accelerateddecision making and planning. The ability to represent virtual 3Dobjects in a real environment can provide further applications, such asselecting furniture for a house, designing kitchen cabinets, selectingdisplay and presentation equipment for conference rooms, presentationlayouts for tradeshow booths, industrial planning and industrialequipment placement, medical equipment placement, and other space anddesign applications.

FIG. 1A is a block diagram illustrating the overall system forvisualization of 3D models of objects in a 2D environment, in accordancewith various embodiments of the present application. FIG. 1B is aschematic illustration of a system for visualization of 3D models ofobjects in a 2D environment. FIG. 2 is a block diagram showing variousmodules of an engine for visualization of 3D models of objects in the 2Denvironment. FIGS. 3A, 3B, 3C and 3D are example representations of the2D environment. FIGS. 4A, 4B and 4C are example representations ofanother 2D environment. FIG. 5 is an example flowchart method forplacing and moving the 3D object in the 2D environment. FIG. 6A isanother example flowchart method for placing and moving the 3D object inthe 2D environment. FIG. 6B is a schematic illustration of positioningof a wall object on a selected wall plane. FIG. 7 illustrates an exampleof a computer network system, in which various embodiments may beimplemented.

FIG. 1A illustrates a block diagram of an overall system 100 forvisualization of 3D objects in a 2D environment, in accordance withvarious embodiments of the present disclosure. Overall system 100 mayinclude a user 120, user devices 130, a user interface 140, an engine200 for virtual visualization of 3D models of objects in 2D environment,a network 202, and various web applications 204. The user devices 130may include a mobile phone 132, a personal computer (PC) 134, a personaldigital assistant (PDA) 136, a tablet PC 137, a wearable computer device138 such as Google Glass™ and Recon Jet™, a 3D scanner 139 and the like.The user 120 via user devices 130 interacts with the user interface 140.The user may also directly interact with the user interface viatouchscreen, keyboard, mouse key, touch pad and the like. The engine 200for visualization of 3D objects in 2D environment may comprise of localdevice-based, network-based, or web-based service available on any ofthe user devices 130. The user may further interact with the webapplications 204. The web applications may include social networkingservices.

The user 120 may interact with the user interface 140 via the userdevices 130. The system for virtual visualization of 3D models ofobjects in 2D environment 300 may be implemented on a local device orvia a network-based or web-based service accessible via user devices130. The user 120 may periodically interact with the system for virtualvisualization of 3D models of objects in 2D environment 300 via the userinterface 140 displayed using one of the user devices 130. Additionally,the user 120 may periodically interact with the web application 204 suchas a social networking service (including social networks, microblogs,web blogs, and other web resources) via the system for virtualvisualization of 3D models of objects in 2D environment 300 and thenetwork 110 to upload graphics obtained using the system for virtualvisualization of 3D models of objects in 2D environment 300, communicatewith members of the social networking service, or request help fromdesign services, or purchase a 3D object through web applications 204.

The user devices 130, in some example embodiments, may include aGraphical User Interface (GUI) for displaying the user interface 140. Ina typical GUI, instead of offering only text menus or requiring typedcommands, the system 200 may present graphical icons, visual indicators,or graphical elements called widgets that may be utilized to allow theuser 120 to interact with the user interface 140. The user devices 130may be configured to utilize icons in conjunction with text, labels, ortext navigation to fully represent the information and actions availableto users.

The network 202 may include the Internet or any other network capable ofcommunicating data between devices. Suitable networks may include orinterface with one or more of, for instance, a local intranet, aPersonal Area Network (PAN), a Local Area Network (LAN), a Wide AreaNetwork (WAN), a Metropolitan Area Network (MAN), a virtual privatenetwork (VPN), a storage area network (SAN), an Advanced IntelligentNetwork (AIN) connection, a synchronous optical network (SONET)connection, Digital Subscriber Line (DSL) connection, an Ethernetconnection, an Integrated Services Digital Network (ISDN) line, a cablemodem, an Asynchronous Transfer Mode (ATM) connection, or an FiberDistributed Data Interface (FDDI) or Copper Distributed Data Interface(CDDI) connection. Furthermore, communications may also include links toany of a variety of wireless networks, including Wireless ApplicationProtocol (WAP), General Packet Radio Service (GPRS), Global System forMobile Communication (GSM), Code Division Multiple Access (CDMA) or TimeDivision Multiple Access (TDMA), cellular phone networks, GlobalPositioning System (GPS), Cellular Digital Packet Data (CDPD), Researchin Motion (RIM), limited duplex paging network, bluetooth radio, or anIEEE 802.11-based radio frequency network. The network 202 may furtherinclude or interface with any one or more of an RS-232 serialconnection, an IEEE-1394 (Firewire) connection, a Fiber Channelconnection, an IrDA (infrared) port, a Small Computer Systems Interface(SCSI) connection, a Universal Serial Bus (USB) connection or otherwired or wireless, digital or analog interface or connection, mesh. Thenetwork 202 may be a network of data processing nodes that areinterconnected for the purpose of data communication.

FIG. 1B is a schematic illustration of a system for visualization of 3Dmodels of objects in a 2D environment. Specifically, as shown anddescribed in more detail herein, a 2D environment may be providedincluding a 2D image. The 2D image 260 may be a photograph, line drawingor video. For example, the 2D image 260 may be a picture of a room orpart of a room. The 2D image 260 may be a personalized image captured bya user's hand-held device or other computing device. In other examples,the 2D image may be saved or imported from a storage device on a remoteserver or other device.

Perspective and scale may be added to the 2D image 260. The perspectiveand scale may be saved as part of the image such that the 2D image isnow a combined image 262 having both the 2D information and perspectiveand scale information associated with the 2D image.

In some examples and as described in more detail herein, walls may beselectively positioned within the image. Further, in some examples, a 3Dobject may then be positioned within the 2D image with perspective andscale overlay, combined image 262. The 3D object may be realisticallypositioned within the resulting image 264 based on the perspective andscale overlay information. Further, the 3D object may be positionedwithin resulting image 264 such that the 3D object may be perceived inthree dimensions within the 2D environment.

FIG. 2 illustrates a block diagram for the engine for virtualvisualization of 3D models of objects in 2D environment 300. The enginefor virtual visualization of 3D models of objects in 2D environment 300may include a receiving module 206, an importing module 208, avisualizing module 210, an adding scale and perspective module 211, asuperimposing module 212, an object replacing module 214, a movingmodule 216, a modify object module 217, a spinning module 218, a savingmodule 224, an uploading module 226 and a purchasing module 228.

Although various modules of the engine for visualization of 3D models ofobjects in 2D environment 300 are shown together, the engine forvisualization of 3D models of objects in 2D environment 300 may beimplemented as a web service, via a distributed architecture, or withina cloud computing environment. The files created with this applicationmay contain perspective, scale and 3D model information in addition tothe 2D graphic background information. The files may be shared, or sentto, or opened on any user devices which may be configured to displaythese files.

The receiving module 206 may be configured to receive inputs from theuser 120 regarding an import request. The import requests may includeuser-specified data regarding a 2D environment, such that the 2Denvironment may be used as a background environment for displaying oneor more 3D models of objects. The importing module 208 may be configuredto import the 2D environment. The 2D environment may be a 2D photographof an interior space such as a living room, or a bedroom, or a kitchenspace, or a bathroom, or a garage, or an office space, and such others.Additionally, the 2D environment may include existing graphicalmaterials or graphical materials captured as a still image or a livefeed image.

The visualizing module 210 may help the user 120 to visualize theimported 2D environment. The visualizing module 210 may be configured toreceive a superimposing request from the user 120. The superimposingrequest may include object information data related to a 3D object.

The user 120 may select the 3D object from a library of 3D objects orfrom 3D objects imported or saved by the user, which the user may havecustomized or made changes to. The received superimposing request ispassed to the superimposing module 212, which superimposes the selected3D object, based on the superimposing request onto the 2D environment.

A non-limiting example of a 3D object may be a display. The display maybe any of a television, monitor, computer monitor, or visual arrayincluding, but not limited to, a liquid crystal display (LCD), lightemitting diode (LED) display, organic light emitting diode (OLED)display, cathode based display, or any other display device capable ofproviding a visual image to a viewer. The display may be comprise any ofa plurality of shapes, such as square, rectangular, curved, round, orany suitable geometric shape. Further, the display may include a supportframe, may be frameless, or any other structural form factor known inthe art. The display may be a stand-alone display or one of a pluralityof display units comprising a composite display including multipledisplay units.

In addition, the visualizing module 210 may be further configured toreceive a request for object replacement from the user. The objectreplacement request may include object information data or metadataencoding object information data including dimensions, or color, ormaterial type of the 3D object selected from the library of 3D objects.The received object replacement request is passed to the objectreplacing module 214, which changes the object, based on the request.Additionally, the selected 3D object may be replaced by the user 120with another 3D object. For example, the user may replace a large chairwith a small chair in a 2D environment after visualizing both the largechair and the small chair in the 2D environment.

The visualizing module 210 may further help the user 120 to alter viewsettings such as brightness or contrast of the imported 2D environment.Altering the brightness or contrast of the 2D environment may allow theuser to visualize the positioning of the 3D object in the 2D environmentunder more light or less light situations. For example, the user will beable to visualize and appreciate how the 3D object superimposed on the2D environment may look during day time versus night time conditions, orconditions of bright lighting or dim lighting where a lamp or lightfixture is being used. Additionally, the visualizing module 210 may alsohelp the user with directional options, such as a compass or a northfacing arrow to identify the orientation of the 2D environment. The usermay prefer to have directional options for personal reasons, oraesthetic preference, or for daylight requirement needs.

The visualizing module 210 may be further configured to receive scaledata (defining the scale of the 2D environment) and the perspective data(defining the perspective of the 2D environment) request from the user.The scale data and perspective data request is passed on to the addingscale and perspective module 211, which allows the user to adjust thescale and perspective of the 2D environment.

The method then moves on to the moving module 216. The moving module 216may be configured to receive an object spinning request for rotationalmovement of the 3D object imported on to the 2D environment. Thespinning request thus received is passed on to the spinning module 218,which allows spinning or any such rotational movement of the 3D objectin the 2D environment. For example, the 3D object inserted onto the 2Denvironment might be a chair or triangular table, and the user mayprefer to precisely orient the chair seat in a particular direction orin case of the triangular table, the user may prefer the three cornersof the table oriented in a certain preferred directions.

The user may also modify one or more properties of the 3D object bychanging the color, material, and/or dimensions of the 3D object. Themodify object module 217 may be configured to receive a request tochange one or more properties of the 3D object. For example, the modifyobject module 217 may receive the request to change the color of theframing of display to match a color of a wall within the two-dimensionalenvironment. Upon receipt of the request, the modify object module 217may change the color of the display framing to match the wall of thetwo-dimensional environment.

In addition to modifying physical properties of the 3D object, themodify object module 217 may be configured to change the behaviorcharacteristics of the 3D object within the 2D environment. For example,a 3D object such as a chair may include behavior characteristicsconstraining the chair to positions on the floor of the 3D environment.Other 3D objects such as a lamp, may be constrained to positions on thefloor, on a desk, a wall ledge, etc. Additional behavior characteristicsmay include a minimum clearance space around the 3D object, mountingrequirements for the 3D object, length of a power cord/powerrequirements, or any other suitable characteristic or constraint thatmay affect the positioning of the 3D model within a two-dimensionalenvironment. The user may save the changes made to the 3D object to alocal library of 3D objects or the changes may be saved to remotelystored 3D object library.

As the user finalizes the appropriate color, material, positioning andspinning of the selected 3D object within the 2D environment, theresulting image may be uploaded to a social network website,microblogging service, blog or any other website resources by theuploading module 226. Thereby, the user 120 may receive inputs fromcontacts such as family members or friends regarding the resulting imageformed by the 3D object placement in the 2D environment. Withappropriate inputs, the user 120 may choose to alter the resulting imageof the 3D object in the 2D environment. In addition, based on userrequest, the saving module 224 may save the resulting image for futureuse or reference. Alternatively, the user 120 may be highly satisfiedwith the overall look of the 3D object in the 2D environment and decideto purchase the 3D object. In such a situation the purchasing request ispassed to the purchasing module, 228. In some embodiments, a contact ofthe user 120 via social networking websites in the web application 204,may request the user to purchase the 3D object in consideration.

Turning now to FIGS. 3A, 3B, 3C and 3D. FIG. 3A illustrates an example2D environment 300. The example 2D environment 300 may include aninterior space bounded by a wall 304, a wall 306, an intersection 308marking the intersection of the wall 304 and the wall 306. Further the2D environment includes a ground plane 302 (e.g. a flooring surface).The example 2D environment may comprise of various objects such as atable 334, as illustrated in FIG. 3A. Each of the ground plane 102, wall304, and wall 306 may include one or more properties including a totalarea property, an occupied area, and an unoccupied area.

FIG. 3A further includes a library 320. The library 320 may includevarious 3D objects that may be imported onto the 2D environment 300. Asshown in FIGS. 3A and 3B, the library includes a couch 322, the display324, a step stool 326, a small drawer 328, a table 330, a wall mirror332, the table 334 and a chest of drawers 336. The library 320 mayinclude but not restricted to the items illustrated. Additionally, whenthe 3D object is selected, a menu bar may be displayed indicating if theobject selected is a floor object, a wall object or a ceiling object. Afinger icon 350 or other suitable indicator may be used to select anitem from the library 320 and drag it to the 2D environment 300.Alternatively, the user may use key board, or touch pad, or mouse key onone of the user devices 130, to select and drag 3D objects onto the 2Denvironment 300. As illustrated in FIG. 3A, the finger icon 350 or othersuitable indicator may select the display 324 from the library 320 anddrag it onto the 2D environment 300. The dashed lines in FIG. 3Aindicate the moving and positioning of display 324 from the library 320to the 2D environment 300. As illustrated in FIG. 3A, once the display324 is selected a menu bar 340 is displayed indicating the type of planethe 3D object belongs to. In this case the display 324 selected is awall object. Alternatively, if the user desires to select the step stool326 or the table 330, then the menu bar will display ground plane orfloor object.

As illustrated in FIG. 3B, the finger icon 350 or other suitableindicator may move the display 324 along the wall 306, as indicated bythe arrow next to the finger icon. The user 120 may move the display 324horizontally along an x-axis or vertically along a y-axis on the wall306. However, as shown in FIG. 3C, the user may continue moving thedisplay 324 horizontally along the wall 306 to the intersection 308. Thedisplay 324 may be configured to halt at intersection of planes, in theexample shown in FIG. 3C, the intersection 308 is the intersectionbetween neighboring wall planes. As display 324 may be configured aswall object, it may be moved on to wall 304, as illustrated in FIG. 3D.

Conversely, in another example, the user 120 may decide to move thedisplay down to the ground plane 302. In such an example, the display324 may travel down to an intersection 310, formed between the wall 306and the ground plane 302. The display 324, being a wall object, may beconfigured to move along the wall planes and not other planes, forexample, the ground plane 302. This has the advantage of restricting theuser from placing 3D objects in planes where the 3D objects do notbelong.

In some examples, an indicator may be provided to indicate to a userappropriate surfaces for a select object. For example, if a wall object(such as a window, wall painting, hanging television display, etc.) isbeing positioned, potential walls for placement may be indicated byhighlighting, flashing, color change, etc., such as schematicallyillustrated at 360. Similarly, if a floor object is being placed, floorplanes may be indicated. Moreover, in some examples, a separateindicator, such as shown at indicator 362, may be used to indicate aplane that an object is currently positioned. For example, when a userselects the wall picture shown in FIG. 3A, indicator 362 may bedisplayed to provide information to a user regarding the current wallplane the object is positioned. Other potential locations (wall planes)may also light up with a same or different indicator (shown at 360).

The properties of the current wall plane and all other planes within thetwo-dimensional environment may be compared to the one or moreparameters of the 3D object. If each of the properties of a plane matcha corresponding parameter of the 3D object, the location within theplane may be identified as a potential location for the 3D object.

For example, a user may wish to move a wall painting as illustrated inFIGS. 4A-4C. Upon selection of the wall painting 532, parameters of thewall painting such as the length and width of wall painting 532 may becompared to the properties of wall 510 and the properties of wall 530.Example properties of wall 510 and wall 530 may include, but are notlimited to an occupied area, an unoccupied area, length, and height, forexample. Any area of wall 510 and wall 530 where the unoccupied areamatches the length and width of wall painting 532 may be indicated tothe user by a visual cue. Alternatively, movement of wall painting 532to any area of wall 510 or wall 530 where any of the properties of thewall do not match the parameters of wall painting 532 may be prevented.

Such indicators may enable a user to easily readjust and positionobjects within the room. In some examples, potential positions may beselected based on additional or alternate parameters, such as size ofthe 3D object, electrical requirements for the 3D object, etc. Forexample, the size of the object may be a parameter which may be takeninto account in indicating possible locations. Thus, a possible walllocation indicator may not be displayed (in some examples) on a wallthat is shorter than a selected wall object, such as a picture.

FIGS. 4A, 4B and 4C illustrate another example 2D environment, room 500.The room 500 may include an interior space bounded by a wall plane 510,a wall plane 530, a ground plane 540 (e.g. a flooring surface) and a topplane 520 (e.g. a ceiling surface). The room 500 may include a floorcabinet 546 and a light source 548. The floor cabinet 546 and the lightsource 548 are part of the room 500, and therefore may not be configuredto be moved or controlled.

In other examples, light source 548 may be a 3D ceiling object andmoveable within room 500. In this example, the user may select lightsource 548. Light source 548 may be classified as a ceiling object andinclude metadata limiting the positioning light source 548. Therefore,the user may position the light source on the top plane 520. The usermay desire to move the ceiling object to various positions on the topplane 520. However if the user decides to move the ceiling object to thewall plane, such as the wall plane 510, the ceiling object may halt atthe intersection 536 between the top plane 520 and the wall plane 510.

A 3D object such as a wall art 532 may be selected from a library suchas the library 320 described in FIG. 3A, and superimposed onto the room500 at position P1. The wall art 532 positioned on the wall plane 510may be moved in a vertical manner such as along the y-axis, orhorizontal manner such as along an x-axis, or a combination of both. Asshown in FIG. 4B, the wall art 532 when moved in a horizontal manneralong the X-axis, halts at the intersection 534 between the wall plane510 and the wall plane 530 at position P2. At this point the user maydecide to move the wall art further to wall plane 530 to position P3. Aswall art 532 is configured to be a wall object, the user may move overthe wall art 532 to the wall plane 530, as illustrated in FIG. 4C.

Alternatively, the user may decide to position the wall art 532vertically along the Y-axis to the ceiling, top plane 520, the wall art532 may be moved till an intersection 536, wherein intersection 536 isthe intersection between the wall plane 510 and the top plane 520. Thewall art 532 being a wall object may be configured to move on wallplanes. As the user may attempt to move the wall art 532 to the topplane 520, the wall art 532 may halt at the intersection 536.Conversely, the user may select and drag a 3D ceiling object such alight fixture from the catalog to the room 500, representing the 2Denvironment. The user may position the ceiling object/light fixture onthe top plane 520. The user may desire to move the ceiling object tovarious positions on the top plane 520. However if the user decides tomove the ceiling object to the wall plane, such as the wall plane 510,the ceiling object may halt at the intersection 536 between the topplane 520 and the wall plane 510. Similarly, if the user decides toselect and drag a floor object such as a chair from the library, such asthe library 320 discussed in FIG. 3A, to the room 500, then the user maymove the chair to various positions on the ground plane 540 but not onthe wall plane 510, or the wall plane 530 or the top plane 520, and soforth.

Further still, FIGS. 4A, 4B and 4C include a menu bar 550 positioned ata periphery of the display. The menu bar 550 may aid a user to accessvarious functions for customizing the 2D environment. In the examplemenu bar 550 shown in FIG. 4A, a first virtual button 552, a secondvirtual button 554, a third virtual button 556, a fourth virtual button558, a fifth virtual button 560 and a sixth virtual button 562 arepresented along the menu options in the menu bar 550. The first virtualbutton 552, which is labeled “Live Mode,” may be selected by the user120 to visualize a 2D environment with any of the user devices 130,discussed above. The “Live Mode” button allows the user 120 to switchbetween edit mode (where objects may be moved, edited and so forth) anda “live” mode where the end result is displayed.

The second virtual button 554, which is labeled “Create Walls,” may beselected by the user 120 to form walls within the 2D environment. Thethird virtual button 556, which is labeled “Add Products,” may beselected by the user 120 to add 3D objects to the room 500. These 3Dobjects may be obtained by the user 120 from the network 202 or frominformation sharing via social networking in the web applications 204.In one example, the user may select one or more 3D objects from acatalog of 3D objects from multiple vendors and 3D object sources todisplay in the 2D environment. The fourth virtual button 558, which islabeled “Undo,” may be selected by the user 120 to undo a priormodification of the selected 3D objects, or a most recent selection ofthe 3D object. With respect to the example illustrated in FIG. 4B, ifthe user 120 is not satisfied with the positioning of the wall art 532with respect to the floor cabinet 546, the user 120 may undo themovement of the wall art 532, as shown in the FIG. 4B. The fifth virtualbutton 560, which is labeled “Redo,” may be selected by the user 120 toredo a movement of the 3D object that was recently performed. Forexample, if the user 120 is not satisfied with the positioning of thewall art 532 as shown in FIG. 4B, the user may undo the currentpositioning with the undo button, fourth virtual button 558, and mayreposition the wall art 532 away from the floor cabinet 546, as shown inFIG. 4A, with the redo button, fifth virtual button 560, thereby redoingthe previous position of the wall art 532.

Furthermore, the user 120 may save and share screenshots of the wall art532 positioning with contacts such as family members or friends via theweb applications 204 to seek their opinion. If one or more of thecontacts share their opinion that the position of the wall art 532 awayfrom the floor cabinet 546, as shown in FIG. 4A, is more aestheticallyand practically satisfactory compared to the positioning of the wall art532 near the floor cabinet 546, as shown in FIG. 4B, the user 120 mayuse the redo button, fifth virtual button 560, to return to the firstpositioning of the wall art.

The sixth virtual button 562, which is labeled “View Settings,” may beselected by the user 120 to review the settings of the 2D environment,in this example, the room 500. In some embodiments, the user 120 may notbe satisfied with the brightness of the 2D environment, the room 500herein, and hence would prefer to adjust the brightness. In otherembodiments, the user 120 may not be satisfied with the color contrastof the room 500 and would prefer to adjust the contrast settings.Additionally, the View Settings button, sixth virtual button 562 mayprovide the option of direction via a compass or a north pointingdirectional arrow. This may aid the user 120 in placing 3D objects in aparticular preferred direction. Several users may have directionalpreference for placing of objects with respect to object material typeand color and the directional aspect is hence very useful for suchpurposes.

If the user decides to superimpose an additional 3D object onto the 2Denvironment, the room 500, then the user may select another 3D objectfrom a library, similar to the library 320 described in FIG. 3A. Theuser may access the library by clicking on or selecting the Add Productsbutton, third virtual button 556, on the menu bar 550. The user may useone or more of the input devices of user devices 130 to access the AddProducts button, third virtual button 556. The additionally selected 3Dobject may then be superimposed onto the 2D environment, the room 500.

FIG. 5 illustrates an example flowchart for a method 600 of placing andmoving an object in the 2D environment. The method 600 may be performedby may be performed by processing logic that may comprise hardware(e.g., programmable logic, microcode, and so forth), software (such ascomputer code executable on a general-purpose computer system or aspecifically configured computer system), or a combination of both. Theprocessing logic resides at the engine 200 for virtual visualization of3D models of objects in 2D environment, as illustrated in FIG. 2. Themethod 600 may be performed by the various modules discussed above withreference to FIG. 2. Each of these modules may comprise processinglogic.

Method 600 begins at 610 where the user 120 may select a 3D object andthe 3D object may be configured to be a wall object. In some examples,and as described in regards to FIG. 3, optionally at 611, a wallindicator may appear on the image where the user is selecting toposition an object. The wall indicator may enable a user options forwhere to position an object. For example, potential wall planes may behighlighted if a wall object is selected. A current wall plane for the3D object may further be indicated.

If the 3D object selected is configured to be a wall object, the methodmoves to operation 612. At operation 612, the 3D wall object may beplaced relative to a wall plane. As discussed in FIGS. 3A-D and FIGS.4A-C, the wall object once placed relative to the wall plane may bemoved on the wall plane so as that the user may position the wall objectat a position aesthetically and practically satisfactory. Additionally,the wall object may be moved from one wall plane to another asillustrated in FIG. 3D and FIG. 4C.

The selected 3D object may be configured to be a ceiling object or afloor object. The method then moves to operation 620. At operation 620,if the selected 3D object is a ceiling object then the user may positionthe 3D object relative to the top or ceiling plane. For example, theuser may select a light fixture. The light fixture may be positioned onthe top plane or ceiling plane. The user may move the light fixture tovarious positions in the top plane. However, the ceiling object may bemoved in the ceiling plane and not in the wall plane. The user may dragthe light fixture to the intersection of the wall plane and the ceilingplane, wherein the light fixture may halt at the intersection as thelight fixture may be configured to be a ceiling object and thereforerestricted to positioning in the ceiling plane. In some examples,optionally at 621, a ceiling indicator may appear on the image where theuser is selecting to position an object.

If the selected 3D object is neither a wall object nor a ceiling object,the method 600 moves to operation 630. At operation 630, the selected 3Dobject may be configured to the ground plane or floor plane or so forth.The user 120 may position the selected 3D object at various positionsrelative to the ground plane. For example, if the selected 3D object isa dinner table, the user may position the dinner table on the groundplane. The user may move the dinner table to the intersection of a wallplane and the ground plane. The dinner table being a floor object may berestricted to the ground plane.

FIG. 6A illustrates an example flowchart for a method 800 of placing andmoving an object in a modeled 2D environment. The method 600 may beperformed by may be performed by processing logic that may comprisehardware (e.g., programmable logic, microcode, and so forth), software(such as computer code executable on a general-purpose computer systemor a specifically configured computer system), or a combination of both.The processing logic resides at the engine 200 for virtual visualizationof 3D models of objects in 2D environment, as illustrated in FIG. 2. Themethod 600 may be performed by the various modules discussed above withreference to FIG. 2. Each of these modules may comprise processinglogic.

Method 800 begins at operation 810. At operation 810, the receivingmodule 206 may receive a request to superimpose 3D models of objectsonto the 2D environment. A superimposing request may include a userselecting a 3D object from a library of 3D models of objects (in theengine for virtual visualization of 3D models of objects in 2Denvironment 300), from 3D models of objects saved or imported by theuser, or 3D models of objects obtained from online resources.

The method then moves to operation 820. At operation 820, as discussedabove in reference to FIG. 2, the moving module 216 may receive arequest to move the 3D objects in the 2D environment. The request tomove or reposition the 3D objects may include data on the selection of adirection by the user. As examples, the 3D objects may be moved in avertical and/or horizontal direction. As another example, the 3D objectmay be rotated about a vertical, horizontal, and/or other rotationalaxis.

The 3D object may be positioned such that the object is fully positionedon a select plane. However, in some examples, the object may bepositioned such that part of the object crosses onto a second plane. Athreshold may be defined where if the object extends beyond the firstplane a sufficient amount, then the object is switched to the secondplane. Further, in some embodiments, if the object is positioned suchthat the object is primarily on the first plane (does not cross thethreshold plane boundary), then the object may be prepositioned on thefirst plane such that the object does not overlap into the second plane.For example, at operation 830, if the 3D object superimposed on the 2Denvironment and positioned on a plane, wherein the plane may be a wallplane, a ground plane (e.g., a floor plane) or a top plane (e.g., aceiling plane), does not completely cross the boundaries of the plane,then the method moves to operation 860 and the 3D object may remain in aposition relative to the currently positioned plane. Any suitable rangemay be used to define a threshold plane boundary. As an illustrativeexample, and not as a limitation, the threshold boundary may be 20% ofthe object crosses to a second plane. Thus, if the object is placed suchthat over 20% of the object is on the second plane, then the plane maysnap or be automatically positioned on the second plane. Althoughillustrated with a 20% threshold, any suitable threshold from 2-100% maybe used.

At operation 830, if the 3D object superimposed on the 2D environmentand positioned on a wall plane or a ground plane (e.g., a floor plane)or a top plane (e.g., a ceiling plane), crosses the boundaries of thatplane, then the method 800 moves to operation 840 and the 3D object maybe repositioned to a new plane.

If the 3D object is configured to belong to the new plane, then themethod 800 moves to operation 870. At operation 870, the 3D object maybe moved with the back surface of the object parallel relative to thenew plane.

If the 3D object selected does not fit the new plane, then the method800 moves to operation 850. At operation 850, the object may continue toremain in a position relative to the current plane.

FIG. 6B is a schematic illustration of positioning of a wall objectrelative to a selected wall plane within 2D environment 900 inaccordance with an example embodiment. As illustrated, a user may selecta wall object 902 for placement on a wall in the image. A user may firstposition the wall object 902 in a first position 906 on wall 904. Insome examples, the position 906 may be a default position which isselected automatically when the wall object is selected. The user maythen adjust the position of the wall object from the default position.

The user may move the wall object as indicated at 908. Once a thresholdplane boundary is crossed, the object 902 may move to the second plane.However, in some examples, the plane may be of a size that is notcompatible for the object, such as plane 912. Specifically, the size ofthe wall between edges 910 and 914 may prevent the wall object fromfitting on the wall. The determination of whether an object may fit maybe an automatic determination. In such examples, the object may pass, asindicated at 916 from wall 904 to a third plane wall 918. Wall object902 may then be selectively positioned on wall 918 at indicated bysecond position 920.

In another embodiment, the threshold plane boundary may be adjusted.FIG. 6B illustrates an adjusted threshold plane boundary 922. Theadjusted threshold plane boundary 922 may be located a distance fromedge 914 based upon the one or more of the object information data andthe environmental information data described above. For example, a 3Dobject corresponding to a ceiling light fixture may include objectinformation data requiring installation of the ceiling light fixture ata minimum distance of three feet from the nearest wall of the twodimensional environment to minimize a potential fire hazard. In thisexample, the threshold boundary between the ceiling and the walls may beadjusted to three feet from the physical threshold boundary between theceiling and the wall. Alternately, the 2D environment 900 may includeenvironmental information data providing the location of sprinklerfixtures within the ceiling that require by federal, state, and localfire ordinances a minimum clear distance surrounding each sprinkler headof eight inches. In this case, an adjusted threshold boundary with aneight inch radius may be located around each sprinkler head and preventmovement of the ceiling light fixture to a location on the ceiling thatwould violate the fire ordinances.

In another example, a user may attempt to position an electrical panelwithin a two-dimensional room environment. The 3D object correspondingto the electrical panel may include object information data encodingmounting requirements, electrical power requirements, and a spatialrequirement that the electrical panel may not be within 6 inches of anyadjacent wall from the wall the electrical panel is mounted. Thetwo-dimensional room environment may include environmental informationdata including construction requirements such as the location of theavailable power supplies to power an electrical panel and theenvironmental information data may further include a local constructionordinance specifying that an electrical panel may not be located withintwo feet of an adjacent wall. In this example, the adjusted thresholdboundaries may be located two feet from the physical threshold boundary.

FIG. 7 shows an example electronic form of a computer system 700, withinwhich is a set of instructions for causing a machine to perform any oneor more of the methodologies discussed herein may be executed. Themachine may be a PC, a tablet PC, a set-top box (STB), a PDA, a cellulartelephone, a web appliance, a network router, switch or bridge, or anymachine capable of executing a set of instructions (sequential orotherwise) that specify actions to be taken by that machine. In severalexample embodiments, the machine operates as a standalone device or maybe connected to other machines (e.g., networked). In a networkeddisposition, the machine may operate in the capacity of a server or aclient machine in a server-client network environment.

The example computer system 700 may be configured to include a processoror multiple processors 702 (e.g., a central processing unit (CPU), agraphics processing unit (GPU), or both), a main memory 704 and a staticmemory 706, which communicate with each other via a bus 708. Thecomputer system 700 may further include a video display unit 710 (e.g.,a liquid crystal display (LCD) or a cathode ray tube (CRT), and thelike). The computer system 700 may also include an alphanumeric inputdevice 712 (e.g., a keyboard, and the like), a cursor control device 714(e.g., a mouse, touchpad, touchscreen, and the like), a disk drive unit716 for reading computer readable medium (e.g., USB thumb drive, solidstate memory drives, and the like), a signal generation device 718(e.g., a speaker, and the like (e.g., network interface card, and thelike), and a network interface device 720.

Further, the disk drive unit 716 may include a computer-readable medium722, on which is stored one or more sets of instructions and datastructures (such as instructions 724) embodying or utilized by any oneor more of the methodologies or functions described herein.Additionally, the instructions 724 may also reside, completely orpartially, within the main memory 704 and/or within the processors 702during execution by the computer system 700. The main memory 704 and theprocessors 702 may also constitute machine-readable media. Furtherstill, the instructions 724 may be transmitted or received over anetwork 726 via the network interface device 720 utilizing any one of anumber of well-known transfer protocols (e.g., Hyper Text TransferProtocol (HTTP)).

The computer-readable medium 722 may include a single medium or multiplemedia (e.g., a centralized or distributed database and/or associatedcaches and servers) that store the one or more sets of instructions. Theterm “computer-readable medium” may further include any medium that iscapable of storing, encoding, or carrying a set of instructions forexecution by the machine and that causes the machine to perform any oneor more of the methodologies of the present application, or that iscapable of storing, encoding, or carrying data structures utilized by orassociated with such a set of instructions. Further, “computer-readablemedium” may further include, but not be limited to, solid-statememories, optical and magnetic media, and carrier wave signals. Suchmedia may also include, without limitation, hard disks, floppy disks,flash memory cards, digital video disks, random access memory (RAM),read only memory (ROM), and the like.

It will be appreciated that the configurations and routines disclosedherein are exemplary in nature, and that these specific embodiments arenot to be considered in a limiting sense, because numerous variationsare possible. For example, the above technology can be applied tovarious 3D objects superimposed on various 2D environments. The subjectmatter of the present disclosure includes all novel and non-obviouscombinations and sub-combinations of the various systems andconfigurations, and other features, functions, and/or propertiesdisclosed herein.

The above-disclosed embodiments may be combined with one or more of theembodiments and disclosures in U.S. Provisional Patent Application No.61/992,629 entitled “METHOD FOR PROVIDING SCALE TO ALIGN 3D OBJECTS IN2D ENVIRONMENT” filed May 13, 2014, one or more of the embodiments anddisclosures in U.S. Provisional Patent Application No. 61/992,759entitled “METHOD FOR FORMING WALLS TO ALIGN 3D OBJECTS IN 2DENVIRONMENT”, filed on May 13, 2014, one or more of the embodiments anddisclosures in U.S. Provisional Patent Application No. 61/992,719entitled “METHOD FOR PROVIDING A PROJECTION TO ALIGN 3D OBJECTS IN 2DENVIRONMENT”, filed May 13, 2014, one or more of the embodiments anddisclosures in U.S. Provisional Patent Application No. 61/992,746entitled “METHOD FOR REPLACING 3D OBJECTS IN 2D ENVIRONMENT”, filed May13, 2014, and/or one or more of the embodiments and disclosures in U.S.Provisional Patent Application 61/992,665 entitled “METHOD FORINTERACTIVE CATALOG FOR 3D OBJECTS WITHIN THE 2D ENVIRONMENT”, filed May13, 2014. The entire contents of each provisional application referencedherein are hereby incorporated by reference for all purposes. Forexample, and not as a limitation, the embodiments herein may be combinedwith the elements and features disclosed in Provisional Application No.61/992,629, the embodiments herein may be combined with the elements andfeatures disclosed in Provisional Application No. 61/992,759, incombination with one or more of the elements and features disclosed inProvisional Application No. 61/992,719, in combination with one or moreof the elements and features disclosed in Provisional Application No.61/992,746, and/or in combination with one or more of the elements andfeatures disclosed in Provisional Application No. 61/992,665. Thesecombinations may include one or more features disclosed in one or moreof the referenced provisional applications, including combinations ofembodiments disclosed herein with features shown in one, two, three,four, or five of the provisional applications.

Further, the entire contents of each concurrently filed application,U.S. Non-Provisional patent application Ser. No. 14/710,554 entitled“METHOD FOR PROVIDING SCALE TO ALIGN 3D OBJECTS IN 2D ENVIRONMENT” fileTO d May 12, 2015, U.S. Non-Provisional patent application Ser. No.14/710,557 entitled “METHOD FOR FORMING WALLS ALIGN 3D OBJECTS IN 2DENVIRONMENT”, filed on May 12, 2015, U.S. Non-Provisional patentapplication Ser. No. 14/710,560 entitled “METHOD FOR PROVIDING APROJECTION TO ALIGN 3D OBJECTS IN 2D ENVIRONMENT”, filed May 12, 2015,U.S. Non-Provisional patent application Ser. No. 14/710,565 entitled“METHOD FOR REPLACING 3D OBJECTS IN 2D ENVIRONMENT”, filed May 12, 2015and/or U.S. Non-Provisional patent application Ser. No. 14/710,569entitled “METHOD FOR INTERACTIVE CATALOG FOR 3D OBJECTS WITHIN THE 2DENVIRONMENT”, filed May 12, 2015, referenced herein are herebyincorporated by reference for all purposes.

The foregoing description is illustrative of particular embodiments ofthe invention, but is not meant to be a limitation upon the practicethereof.

The foregoing discussion should be understood as illustrative and shouldnot be considered limiting in any sense. While the inventions have beenparticularly shown and described with references to preferredembodiments thereof, it will be understood by those skilled in the artthat various changes in form and details may be made therein withoutdeparting from the spirit and scope of the inventions as defined by theclaims.

The corresponding structures, materials, acts and equivalents of allmeans or steps plus function elements in the claims below are intendedto include any structure, material or acts for performing the functionsin combination with other claimed elements as specifically claimed.

Finally, it will be understood that the articles, systems, and methodsdescribed hereinabove are embodiments of this disclosure—non-limitingexamples for which numerous variations and extensions are contemplatedas well. Accordingly, this disclosure includes all novel and non-obviouscombinations and sub-combinations of the articles, systems, and methodsdisclosed herein, as well as any and all equivalents thereof.

The invention claimed is:
 1. A method for visualizing athree-dimensional model of an object in a two-dimensional environment,the method comprising: receiving, with a processor, from a user, animport request to import the two-dimensional environment to be used as abackground for the three-dimensional model; importing, with theprocessor, based on the import request, the two-dimensional environment;receiving, with the processor, from the user, a superimposing request tosuperimpose the three-dimensional model of the object onto thetwo-dimensional environment; superimposing, with the processor, thethree-dimensional model of the object onto the two-dimensionalenvironment based on the superimposing request, wherein thethree-dimensional model includes a first parameter including one or moresize dimensions of the object, a second parameter including one or moreconstraints to superimposing the three-dimensional model onto one ormore planes of the two-dimensional environment, the one or moreconstraints corresponding to one or more behavior characteristics of theobject, and a third parameter including metadata defining the object asone of a wall object, a ceiling object, a floor object, or a combinationthereof; displaying, with the processor, a visual indication for guidinga positioning of the three-dimensional model of the object within thetwo-dimensional environment, wherein the visual indication is a planeindicator superimposed onto the one or more planes of thetwo-dimensional environment in accordance with both the first parameterthat includes the one or more size dimensions of the object and thesecond parameter of the three-dimensional model of the object thatincludes the one or more constraints to superimposing thethree-dimensional model onto the one or more planes of thetwo-dimensional environment; moving and aligning, with the processor,the three-dimensional model of the object along a plane in thetwo-dimensional environment based on the one or more of the firstparameter, the second parameter, and the third parameter of thethree-dimensional model, wherein moving and aligning thethree-dimensional model of the object is constrained by the one or moreconstraints; and updating, with the processor, the visual indicationduring the moving and aligning of the three-dimensional model of theobject, wherein the three-dimensional model of the object is preventedfrom being moved to locations of the two-dimensional environment thatare not in accordance with both the first parameter and the secondparameter of the three-dimensional model of the object.
 2. The method ofclaim 1, wherein the plane is one of a wall plane, a ceiling plane, anda floor plane; and wherein the plane includes one or more propertiesincluding a total area property, an occupied area, and an unoccupiedarea.
 3. The method of claim 2, wherein the three-dimensional model ofthe object is one of a wall object, a ceiling object, and a floorobject.
 4. The method of claim 1, further comprising receiving a requestto change a position of the three-dimensional model from a first planeof the two-dimensional environment to a second plane of thetwo-dimensional environment, wherein the first plane and the secondplane border a threshold boundary.
 5. The method of claim 4, furthercomprising positioning the three-dimensional model on the second planewhen the threshold boundary is crossed.
 6. The method of claim 5,wherein positioning the three-dimensional model on the second planeincludes changing the three-dimensional model from a first perspectivedefined by the first plane to a second perspective defined by the secondplane.
 7. The method of claim 1, further comprising blocking positioningof the object at a threshold boundary.
 8. The method of claim 2, furthercomprising: receiving a request to change a position of thethree-dimensional model from a first plane of the two-dimensionalenvironment to a second plane of the two-dimensional environment;receiving one or more of the first parameter, the second parameter, andthe third parameter of the three-dimensional model; receiving one ormore properties of the second plane; comparing the one or more of thefirst parameter, the second parameter, and the third parameter of thethree-dimensional model to the one or more properties of the secondplane; and if one of the one or more of the first parameter, the secondparameter, and the third parameter of the three-dimensional model doesnot match a corresponding property of the one or more properties of thesecond plane, then blocking positioning of the object at a thresholdboundary.
 9. The method of claim 2, further comprising: receiving arequest to change a position of the three-dimensional model from a firstplane of the two-dimensional environment to a second plane of thetwo-dimensional environment; receiving one or more of the firstparameter, the second parameter, and the third parameter of thethree-dimensional model, the one or more parameters including at leastthe one or more constraints to superimposing the three-dimensional modelonto the one or more planes of the two-dimensional environment;receiving one or more properties of each plane defined by the one ormore constraints; and for each plane defined by the one or moreconstraints: comparing the one or more of the first parameter, thesecond parameter, and the third parameter of the three-dimensional modelto the one or more properties of the plane; and if each of the one ormore of the first parameter, the second parameter, and the thirdparameter of the three-dimensional model matches a correspondingproperty of the one or more properties of the plane, displaying thevisual indication on the plane, the visual indication indicating anallowable position for the three-dimensional model.
 10. The method ofclaim 1, wherein the one or more behavior characteristics of the objectinclude one or more of a minimum clearance space around the object,mounting requirements for the object, and a length of a power cord ofthe object.
 11. A system for visualization of a three-dimensional modelof an object in a two-dimensional environment, the system comprising: aprocessor; and a storage device, the storage device containinginstructions executable by the processor, comprising: a receiving moduleconfigured to receive one or more requests from a user, the requestsincluding one or more of an import request, a scale data request, asuperimposing request, and a moving request; an importing moduleconfigured to import, based on the import request of the user, thetwo-dimensional environment; a superimposing module configured tosuperimpose, based on the superimposing request, the three-dimensionalmodel of the object onto the two-dimensional environment, wherein thethree-dimensional model includes one or more parameters, the one or moreparameters including one or more size dimensions of the object and oneor more constraints to superimposing the three-dimensional model ontoone or more planes of the two-dimensional environment; a visualizationmodule configured to visualize an animated visual indication of the oneor more constraints superimposed onto the one or more planes of thetwo-dimensional environment for guiding a positioning of thethree-dimensional model within the two-dimensional environment, wherethe animated visual indication is a plane indicator of one or moreplanes upon which the object is allowed to be positioned, and whereinthe three-dimensional model of the object is prevented from being movedto locations of the two-dimensional environment that are not inaccordance with each of the one or more parameters of thethree-dimensional model; and a moving module configured to move thethree-dimensional model of the object along a plane in thetwo-dimensional environment, based on the moving request, wherein movingthe three-dimensional model of the object along the plane is constrainedby the one or more constraints.
 12. The system of claim 11, wherein theplane is one of a wall plane, a ceiling plane, and a floor plane; andwherein the plane includes one or more properties including a total areaproperty, an occupied area, and an unoccupied area.
 13. The system ofclaim 12, wherein the three-dimensional model of the object is one of awall object, a ceiling object, and a floor object.
 14. The system ofclaim 11, wherein the receiving module is configured to receive arequest to change a position of the three-dimensional model from a firstplane of the two-dimensional environment to a second plane of thetwo-dimensional environment, wherein the first plane and the secondplane border a threshold boundary.
 15. The system of claim 14, whereinthe moving module is configured to position the three-dimensional modelon the second plane when the threshold boundary is crossed.
 16. Thesystem of claim 15, wherein positioning the three-dimensional model onthe second plane includes changing the three-dimensional model from afirst perspective defined by the first plane to a second perspectivedefined by the second plane.
 17. The system of claim 12, wherein thevisualization module is further configured to, upon receiving a requestto change a position of the three-dimensional model from a first planeof the two-dimensional environment to a second plane of thetwo-dimensional environment: receive the one or more parameters of thethree-dimensional model; receive one or more properties of the secondplane; compare the one or more parameters of the three-dimensional modelto the one or more properties of the second plane; and if one of the oneor more parameters of the three-dimensional model does not match acorresponding property of the one or more properties of the secondplane, then block positioning of the object at a threshold boundary. 18.The system of claim 12, wherein the visualization module is furtherconfigured to, upon receiving a request to change a position of thethree-dimensional model from a first plane of the two-dimensionalenvironment to a second plane of the two-dimensional environment:receive the one or more parameters of the three-dimensional model, theone or more parameters including at least the one or more constraints tosuperimposing the three-dimensional model onto the one or more planes ofthe two-dimensional environment; receive one or more properties of eachplane defined by the one or more constraints; and for each plane definedby the one or more constraints: compare the one or more parameters ofthe three-dimensional model to the one or more properties of the plane;and if each of the one or more parameters of the three-dimensional modelmatches a corresponding property of the one or more properties of theplane, display the animated visual indication on the plane, the animatedvisual indication indicating an allowable position for thethree-dimensional model.
 19. A system for visualization of athree-dimensional model of an object in a two-dimensional environment,the system comprising: a processor; and a storage device, the storagedevice containing instructions executable by the processor, comprising:a receiving module configured to receive one or more requests from auser, the requests including one or more of an import request, a scaledata request, a superimposing request, and a moving request; animporting module configured to import, based on the import request ofthe user, the two-dimensional environment, wherein the two-dimensionalenvironment includes one or more planes, each of the one or more planesincluding one or more properties including a total area property, anoccupied area, and an unoccupied area; a superimposing module configuredto superimpose, based on the superimposing request, thethree-dimensional model of the object onto the two-dimensionalenvironment, wherein the three-dimensional model includes one or moreparameters including one or more size dimensions of the object and oneor more constraints to superimposing the three-dimensional model ontothe one or more planes of the two-dimensional environment; and avisualization module configured to: receive the one or more parametersof the three-dimensional model; receive the one or more properties ofthe one or more planes of the two-dimensional environment; compare theone or more parameters of the three-dimensional model to the one or moreproperties of each of the one or more planes; if each of the one or moreparameters of the three-dimensional model matches a correspondingproperty of the one or more properties of allowable planes, display avisual indication superimposed onto the allowable planes for guiding apositioning of the three-dimensional model within the two-dimensionalenvironment, the allowable planes including a current plane upon whichthe three-dimensional model is positioned and one or more otherallowable planes, the visual indication being a plane indicator of thecurrent plane upon which the three-dimensional model is positioned andthe one or more other allowable planes for the three-dimensional modelof the object; the moving module configured to move thethree-dimensional model of the object along a plane of the one or moreplanes in the two-dimensional environment, based on the moving request,wherein moving the three-dimensional model of the object along the planeis constrained by the one or more constraints, wherein thethree-dimensional model of the object is prevented from being moved tolocations in the two-dimensional environment that are not indicated bythe plane indicator, and wherein the visualization module updates thedisplay of the visual indication on the plane as the moving module movesthe three-dimensional model of the object along the plane.
 20. Themethod of claim 19, wherein the visual indication that is the planeindicator of the current plane is a first indicator, and wherein thevisual indication that is the plane indicator of the one or more otherallowable planes is a second indicator, the first indicator and thesecond indicator being different from one another.